<?php
use think\facade\Env;

return [
    // 默认使用的数据库连接配置
    'default'         => Env::get('database.driver', 'mysql'),

    // 自定义时间查询规则
    'time_query_rule' => [],

    // 自动写入时间戳字段
    // true为自动识别类型 false关闭
    // 字符串则明确指定时间字段类型 支持 int timestamp datetime date
    'auto_timestamp'  => true,

    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',

    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [    //可以增加多个链接
            //模型中添加 protected $connection = 'demo';设置查询链接
            //查询构造器 \think\facade\Db::connect('demo')->table('user')->find();设置查询链接

            // 数据库类型
            'type'              => Env::get('database.type', 'mysql'),
            // 服务器地址
            'hostname'          => Env::get('database.hostname', '127.0.0.1'),
            // 数据库名
            'database'          => Env::get('database.database', 'tp'),
            // 用户名
            'username'          => Env::get('database.username', 'tp'),
            // 密码
            'password'          => Env::get('database.password', '123456'),
            // 端口
            'hostport'          => Env::get('database.hostport', '3306'),
            // 数据库连接参数
            'params'            => [],
            // 数据库编码默认采用utf8
            'charset'           => Env::get('database.charset', 'utf8'),
            // 数据库表前缀
            'prefix'            => Env::get('database.prefix', ''),

            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy'            => 0,
            // 数据库读写是否分离 主从式有效
            'rw_separate'       => false,
            // 读写分离后 主服务器数量
            'master_num'        => 1,
            // 指定从服务器序号
            'slave_no'          => '',
            // 是否严格检查字段是否存在
            'fields_strict'     => true,
            // 是否需要断线重连
            'break_reconnect'   => false,
            // 监听SQL
            'trigger_sql'       => true,
            // 开启字段缓存
            'fields_cache'      => false,
            // 字段缓存路径
            'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
        ],

        // 更多的数据库配置信息
        // 这是开启长连接的配置
        //'params' => [
        //    \PDO::ATTR_PERSISTENT   => true,
        //    \PDO::ATTR_CASE         => \PDO::CASE_LOWER,
        //],
        // 如果长连接断开 开启断线重连
        //'break_reconnect' => true,
    ],
];

//主从模式的数据库配置案例
//配置主从后，写操作必须用数据库的execute方法，读操作必须用数据库的query方法
//return [
//    'default'    =>    'mysql',
//    'connections'    =>    [
//        'mysql'    =>    [
//            // 启用分布式数据库
//            'deploy'   => 1,
//            // 数据库类型
//            'type'     => 'mysql',
//            // 服务器地址 默认第一个是主服务器
//            'hostname' => '192.168.1.1,192.168.1.2,192.168.1.3',
//            // 数据库名
//            'database' => 'demo',
//            // 数据库用户名
//            'username' => 'root,slave,slave',
//            // 数据库密码
//            'password' => '123456',
//            // 数据库连接端口
//            'hostport' => '',
//            // 数据库字符集
//            'charset'  => 'utf8',
//            // 是否开启读写分离
//            'rw_separate' => true,
//        ],
//    ],
//];
//以下情况会自动链接主服务器
//使用了数据库的写操作方法（execute/insert/update/delete以及衍生方法）；
//如果调用了数据库事务方法的话，会自动连接主服务器；
//从服务器连接失败，会自动连接主服务器；
//调用了查询构造器的lock方法；
//调用了查询构造器的master/readMaster方法

// 开启自动主库读取，写操作执行后当前请求后续查询操作全部查询主库，推荐不开启，特定场景下可能失去了读写分离的意义
//'read_master' => true,
